package com.freeter.modules.category.entity;

import java.io.Serializable;
import java.util.Date;

import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.NoArgsConstructor;

/**
 * 分类表
 * 
 * @author JerryLi
 * @date 2018-05-22 15:46:31
 */
@Data
@TableName("cn_category")
@ApiModel(value = "Category")
@NoArgsConstructor
public class CategoryEntity<T> implements Serializable {
	private static final long serialVersionUID = 1L;

	public CategoryEntity(T t) {
		BeanUtils.copyProperties(this, t);
	}

	/**
	 * 分类ID
	 */

	@TableId
	@ApiModelProperty(value = "分类ID", hidden = true)
	private Long categoryId;

	/**
	 * 父分类ID
	 */

	@ApiModelProperty(value = "父分类ID")
	private Long parentId;

	/**
	 * 分类名称
	 */

	@ApiModelProperty(value = "分类名称")
	private String name;

	/**
	 * 排序
	 */

	@ApiModelProperty(value = "排序")
	private Integer sort;

	/**
	 * 目录类型 2=二级目录/1=一级目录/0=总目录
	 */

	@ApiModelProperty(value = "目录类型 2=二级目录/1=一级目录/0=总目录")
	private Integer type;

	/**
	 * 状态 1=显示/0=隐藏
	 */

	@ApiModelProperty(value = "状态 1=显示/0=隐藏")
	private Integer status;

	/**
	 * 是否导航栏 1=显示/0=隐藏
	 */

	@ApiModelProperty(value = "是否导航栏 1=显示/0=隐藏")
	private Integer showInNav;

	/**
	 * 是否置顶 1=置顶/0=默认
	 */

	@ApiModelProperty(value = "是否置顶 1=置顶/0=默认")
	private Integer showInTop;

	/**
	 * 是否热门 1=热门/0=默认
	 */

	@ApiModelProperty(value = "是否热门 1=热门/0=默认")
	private Integer showInHot;

	/**
	 * 创建时间
	 */

	@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat
	@ApiModelProperty(value = "创建时间", hidden = true)
	@JsonIgnore
	private Date createTime;

	/**
	 * 创建者
	 */

	@ApiModelProperty(value = "创建者", hidden = true)
	private String createBy;

	/**
	 * 更新时间
	 */

	@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat
	@ApiModelProperty(value = "更新时间", hidden = true)
	@JsonIgnore
	private Date updateTime;

	/**
	 * 更新者
	 */
	@JsonIgnore
	@ApiModelProperty(value = "更新者", hidden = true)
	private String updateBy;

	/**
	 * 页面标题
	 */

	@ApiModelProperty(value = "页面标题")
	private String pageTitle;

	/**
	 * 页面描述
	 */

	@ApiModelProperty(value = "页面描述")
	private String pageDescription;

	/**
	 * 页面关键词
	 */

	@ApiModelProperty(value = "页面关键词")
	private String pageKeyword;

	/**
	 * 备注信息
	 */

	@ApiModelProperty(value = "备注信息")
	private String remarks;
}
